argparse.ArgumentParser()用法解析

您所在的位置:网站首页 put out用法解析 argparse.ArgumentParser()用法解析

argparse.ArgumentParser()用法解析

#argparse.ArgumentParser()用法解析| 来源: 网络整理| 查看: 265

一、介绍argparse是python用于解析命令行参数的标准模块。我们很多时候,需要用到解析命令行参数的程序,例如在终端窗口输入(深度学习)训练的参数和选项二、使用步骤

我们常常可以把argparse的使用简化成下面四个步骤

import argparse ;首先导入该模块 parser = argparse.ArgumentParser();创建一个解析对象 parser.add_argument();然后向该对象中添加要关注的命令行参数和选项,每一个add_argument方法对应一个要关注的参数或选项; parser.parse_args();调用parse_args()方法进行解析,解析成功之后即可使用。三、详细例子

搬运:HiDaDeng:argparse模块用法实例详解

3.1 传入一个参数

新建demo.py文件,来看一个最简单的argsparse库的使用的例子。

import argparse parser = argparse.ArgumentParser(description='命令行中传入一个数字') #也可以直接(),不用description parser.add_argument('integers', type=str, help='传入的数字') args = parser.parse_args() #解析方法 #获得传入的参数 print(args)

在传入数字之前,先运用如下命令查看指令

python demo.py -h

在命令行中看到demo.py的运行结果如下;positional arguments代表指定的参数,optional arguments代表可选参数。

usage: demo.py [-h] integers 命令行中传入数字 positional arguments: integers 传入的数字 optional arguments: -h, --help show this help message and exit

现在我们在命令行中给demo.py 传入一个参数5,

python demo.py 5

运行,得到的运行结果是

Namespace(integers='5')

我们可以看到,得到的这个结果Namespace(integers='5')是一种类似于python字典的数据类型。可以使用 arg.参数名来提取这个参数。

print(args) => print(args.integers)

现在,在命令行中运行 python demo.py 5 , 运行结果为

53.2 传入多个参数(nargs='+')

现在在命令行中给demo.py 传入多个参数,例如传入1,2,3,4四个数字

python demo.py 1 2 3 4

运行报错

usage: demo.py [-h] integers demo.py: error: unrecognized arguments: 2 3 4

不能识别2 3 4,所以我们需要重新更改demo.py代码,加上nargs参数

import argparse parser = argparse.ArgumentParser(description='命令行中传入一个数字') parser.add_argument('integers', type=str, nargs='+',help='传入的数字') args = parser.parse_args() print(args.integers)

nargs是用来说明传入的参数个数,'+' 表示传入至少一个参数。这时候再重新在命令行中运行python demo.py 1 2 3 4得到

['1', '2', '3', '4']

另外,我们看到代码中有type这个关键词,该关键词可以传入list, str, tuple, set, dict等。例如我们把上面的type=str,改成type=int,这时候我们就可以进行四则运算。

print(args.integers) => print(sum(args.integers))

在命令行中输入 python demo.py 1 2 3 4, 运行结果为

103.3 位置参数

在命令行中传入参数时候,传入的参数的先后顺序不同,运行结果往往会不同,这是因为采用了位置参数。

import argparse parser = argparse.ArgumentParser(description='姓名') parser.add_argument('param1', type=str,help='姓') parser.add_argument('param2', type=str,help='名') args = parser.parse_args() #打印姓名 print(args.param1+args.param2)

在命令行中分别输入python demo.py 张 三和python demo.py 三 张,得到的 运行结果分别为

张三 和 三张

如果我们将代码parser.add_argument('param1', type=str,help='姓')和

parser.add_argument('param2', type=str,help='名')互换位置,即第4行和第五行代码,再重新运行python demo.py 张 三 和 python demo.py 三 张,得到的 运行结果分别为

三张 和 张三3.4 可选参数(这个也是平时用的最多的)

为了在命令行中避免上述位置参数的bug(容易忘了顺序),可以使用可选参数(因为上面的几个例子,都是需要输入指定个数的参数,不能多也不能少)。这个有点像关键词传参,但是需要在关键词前面加--,例如

import argparse parser = argparse.ArgumentParser(description='姓名') parser.add_argument('--family', type=str,help='姓') parser.add_argument('--name', type=str,help='名') args = parser.parse_args() #打印姓名 print(args.family+args.name)

在命令行中输入,对于这个等号=,也可以用一个空格代替

python demo.py --family=张 --name=三

运行结果

张三

可选参数虽然写法比较繁琐,但是增加了命令行中的可读性,不容易因为参数传入顺序导致数据错乱。

3.5 必需参数

add_argument有一个required参数可以设置该参数是否必需。

import argparse parser = argparse.ArgumentParser(description='姓名') parser.add_argument('--family', type=str, help='姓') parser.add_argument('--name', type=str, required=True, default='', help='名') args = parser.parse_args() #打印姓名 print(args.family+args.name)

在命令行中输入 python demo.py --family=张,运行结果

usage: demo.py [-h] [--family FAMILY] --name NAME demo.py: error: the following arguments are required: --name

因为可选参数name的required=True,所以必须要传入。如果我们将其更改为False,程序运行结果

也算对argparse.ArgumentParser()有了一个进一步的了解,而不是只会调用,和修改default。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3